package cn.tedu.threadpool;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ExecutorServiceDemo2 {

    public static void main(String[] args) {

        // 预定义的线程池

        // 缓存线程池
        /*
            特点：
                1. 没有核心线程全部都是临时线程
                2. 临时线程的数量为Integer.MAX_VALUE，
                    因为单台服务器的线程承载量远远小于21亿，
                    所以认为这个线程池能够处理无限多的请求
                3. 临时线程用完之后的存活时间为1min
                4. 工作队列是同步队列
        */
        // 大池子小队列
        // 适合于高并发的短任务场景，例如即时通讯
        // ExecutorService es = Executors.newCachedThreadPool();

        // 固定线程池
        /*
            特点：
                1. 只有核心线程没有临时线程
                2. 工作队列是LinkedBlockingQueue
                    此时认为这个线程池能够缓存无限多的请求
         */
        // 小池子大队列
        // 适合于并发低的长任务场景，例如文件下载
        ExecutorService es = Executors.newFixedThreadPool(5);
        es.submit(new ESThread());
        es.shutdown();

    }

}
